package com.kfm.am.stream;

import java.util.List;
import java.util.OptionalDouble;
import java.util.function.Function;
import java.util.function.ToDoubleFunction;
import java.util.function.ToIntFunction;
import java.util.stream.Stream;

public class Demo04 {

    public static void main(String[] args) {
        // 有一个整数集合，求每个元素平方的平均值。
        // map()  average() DoubleStream 的方法
        List<Integer> list = List.of(2, 3, 4, 5);
        OptionalDouble average = list.stream().mapToInt(new ToIntFunction<Integer>() {

            @Override
            public int applyAsInt(Integer value) {
                return value * value;
            }
        }).average();
        // orElse() 如果前面的 average 里面的是空的  就用我们提供的默认值，否则就是 OptionalDouble 的value
        double v = average.orElse(0.0);//
        double asDouble = average.getAsDouble(); // 如果值不存在会抛出异常
//        double v = (double) average;
        // reduce((i1, i2) -> i1 + i2).get();
//        System.out.println(i / list.size());
        System.out.println(v);
    }
}
